package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.dom.DomDouble;
import br.com.telescope.adsrt.dom.DomId;
import br.com.telescope.adsrt.lib.Field;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.feature.AbstractFeature;
import br.com.telescope.t2.feature.DeleteFeature;
import br.com.telescope.t2.feature.ListFeature;
import br.com.telescope.t2.feature.MultiRowInsertFeature;
import br.com.telescope.t2.feature.MultiRowUpdateFeature;
import br.com.telescope.t2.feature.QueryFeature;
import br.com.telescope.t2.feature.ViewFeature;
import java.util.ArrayList;
import java.util.List;
import solutions.ferpa.ztest.ent.*;
import solutions.ferpa.ztest.intf.*;

/**
 * Calibrações dos instrumentos.
 * <p>
 * Interface para manutenção de Calibração do instrumento
 * <P>
 * Telescope origin: ZTEST.CAD_CALIBRACAO_INSTRUMENTO
 * <P>
 * Base entity: ZTEST.CALIBRACAO_INSTRUMENTO
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class CadCalibracaoInstrumento extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "ZTEST.CAD_CALIBRACAO_INSTRUMENTO";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Calibrações dos instrumentos");
    }
    
    protected EntCalibracaoInstrumento base;
    protected EntCalibracaoInstrumento rec; // NEED_TJW1_COMPATIBILITY
    
    // Service parameters
    private DomId pIdCertificadoCalibracao;
    
    // Record items
    private DomDouble aValorReferencia;
    private DomDouble aValorMedidoAntesAjuste;
    private DomDouble aIncertezaMedidoAntesAjuste;
    private DomDouble aValorMedidoDepoisAjuste;
    private DomDouble aIncertezaMedidoDepoisAjuste;
    private DomId aId;
    private DomId aCertificadoCalibracaoId;
    
    // Query items
    private DomDouble qValorMedidoDepoisAjuste;
    private DomDouble qValorReferencia;
    private DomDouble qValorMedidoAntesAjuste;
    private DomDouble qIncertezaMedidoDepoisAjuste;
    private DomDouble qIncertezaMedidoAntesAjuste;
    
    @Override
    public String getBaseSql() {
        return "select BASE.*"
                + " from CALIBRACAO_INSTRUMENTO BASE";
    }
    
    @Override
    public void initAttributes() {
        
        aValorReferencia = new DomDouble();
        aValorReferencia.context(ctx).name("VALOR_REFERENCIA").label("Valor de referência");
        
        aValorMedidoAntesAjuste = new DomDouble();
        aValorMedidoAntesAjuste.context(ctx).name("VALOR_MEDIDO_ANTES_AJUSTE").label("Valor medido (antes ajuste)");
        
        aIncertezaMedidoAntesAjuste = new DomDouble();
        aIncertezaMedidoAntesAjuste.context(ctx).name("INCERTEZA_MEDIDO_ANTES_AJUSTE").label("Incerteza valor medido (antes do ajuste)");
        
        aValorMedidoDepoisAjuste = new DomDouble();
        aValorMedidoDepoisAjuste.context(ctx).name("VALOR_MEDIDO_DEPOIS_AJUSTE").label("Valor medido (depois ajuste)");
        
        aIncertezaMedidoDepoisAjuste = new DomDouble();
        aIncertezaMedidoDepoisAjuste.context(ctx).name("INCERTEZA_MEDIDO_DEPOIS_AJUSTE").label("Incerteza valor medido (depois do ajuste)");
        
        aId = new DomId();
        aId.context(ctx).name("ID").label("Id");
        
        aCertificadoCalibracaoId = new DomId();
        aCertificadoCalibracaoId.context(ctx).name("CERTIFICADO_CALIBRACAO_ID").label("Certificado de calibração");
        
        
        qValorMedidoDepoisAjuste = new DomDouble();
        qValorMedidoDepoisAjuste.context(ctx).name("VALOR_MEDIDO_DEPOIS_AJUSTE").label("Valor medido (depois ajuste)");
        
        qValorReferencia = new DomDouble();
        qValorReferencia.context(ctx).name("VALOR_REFERENCIA").label("Valor de referência");
        
        qValorMedidoAntesAjuste = new DomDouble();
        qValorMedidoAntesAjuste.context(ctx).name("VALOR_MEDIDO_ANTES_AJUSTE").label("Valor medido (antes ajuste)");
        
        qIncertezaMedidoDepoisAjuste = new DomDouble();
        qIncertezaMedidoDepoisAjuste.context(ctx).name("INCERTEZA_MEDIDO_DEPOIS_AJUSTE").label("Incerteza valor medido (depois do ajuste)");
        
        qIncertezaMedidoAntesAjuste = new DomDouble();
        qIncertezaMedidoAntesAjuste.context(ctx).name("INCERTEZA_MEDIDO_ANTES_AJUSTE").label("Incerteza valor medido (antes do ajuste)");
    }
    
    @Override
    public void initParameters() {
        pIdCertificadoCalibracao = new DomId(ctx, "ID_CERTIFICADO_CALIBRACAO", "Certificado de calibração");
        pIdCertificadoCalibracao.setValue(ctx.getParameter("P_ID_CERTIFICADO_CALIBRACAO"));
        pIdCertificadoCalibracao.setSqlExpression("CERTIFICADO_CALIBRACAO_ID");
        if (pIdCertificadoCalibracao.isNotNull()) {
            aCertificadoCalibracaoId.setValue(pIdCertificadoCalibracao.getValue());
        }
    }
    
    @Override
    public List<Field> getParameters() {
        if (allParameters == null) {
            allParameters = new ArrayList<Field>();
            allParameters.add(pIdCertificadoCalibracao);
        }
        return allParameters;
    }
    
    @Override
    public void copyBindParameters() {
        EntCalibracaoInstrumento record = getRecord();
        if (pIdCertificadoCalibracao.isNotNull()) {
            record.setCertificadoCalibracaoId(pIdCertificadoCalibracao.getValue());
        }
    }
    
    @Override
    public void retrieveBindParameters() {
        pIdCertificadoCalibracao.setValue(getRecord().valueOfCertificadoCalibracaoId());
    }
    
    @Override
    public String getQueryPkColumn() {
        return "BASE.ID";
    }
    
    @Override
    public void setId(String value) {
        this.aId.setValue(value);
    }
    
    @Override
    public EntCalibracaoInstrumento getRecord() {
        if (base == null) {
            base = new EntCalibracaoInstrumento(ctx);
            rec = base;
        }
        return this.base;
    }
    
    @Override
    public String getContextName() {
        return aValorReferencia.toText();
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "VALOR_REFERENCIA, VALOR_MEDIDO_ANTES_AJUSTE, INCERTEZA_MEDIDO_ANTES_AJUSTE, VALOR_MEDIDO_DEPOIS_AJUSTE";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="QUERY">
    public class FQuery extends QueryFeature {
        
        @Override
        public void initForm() {
            addField(qValorReferencia, "opt");
            addField(qValorMedidoAntesAjuste, "opt");
            addField(qIncertezaMedidoAntesAjuste, "opt");
            addField(qValorMedidoDepoisAjuste, "opt");
            addField(qIncertezaMedidoDepoisAjuste, "opt");
        }
        
        {
            setFeatureName("QUERY");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="LIST">
    public class FList extends ListFeature {
        
        @Override
        public void initForm() {
            addField(aValorReferencia, "view");
            addField(aValorMedidoAntesAjuste, "view");
            addField(aIncertezaMedidoAntesAjuste, "view");
            addField(aValorMedidoDepoisAjuste, "view");
            addField(aIncertezaMedidoDepoisAjuste, "view");
        }
        
        {
            setFeatureName("LIST");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="VIEW">
    public class FView extends ViewFeature {
        
        @Override
        public void initForm() {
            addField(aValorReferencia, "view");
            addField(aValorMedidoAntesAjuste, "view");
            addField(aIncertezaMedidoAntesAjuste, "view");
            addField(aValorMedidoDepoisAjuste, "view");
            addField(aIncertezaMedidoDepoisAjuste, "view");
        }
        
        {
            setFeatureName("VIEW");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="INSERT">
    public class FInsert extends MultiRowInsertFeature {
        
        @Override
        public void initForm() {
            aValorReferencia.setOptional(false);
            addField(aValorReferencia, "rqd");
            addField(aValorMedidoAntesAjuste, "opt");
            addField(aIncertezaMedidoAntesAjuste, "opt");
            addField(aValorMedidoDepoisAjuste, "opt");
            addField(aIncertezaMedidoDepoisAjuste, "opt");
        }
        
        @Override
        public void preDisplay() {
            {
                CadCalibracaoInstrumento external = new CadCalibracaoInstrumento();
                external.setRuntime(ctx.clone());
                external.init();
                AbstractFeature feature = external.getFeature("LIST");
                external.setParameterIdCertificadoCalibracao(pIdCertificadoCalibracao.getValue());
                external.setDetail(true);
                feature.run();
            }
        }
        
        {
            setFeatureName("INSERT");
            setPrimary(false);
            setRows(15);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="UPDATE">
    public class FUpdate extends MultiRowUpdateFeature {
        
        @Override
        public void initForm() {
            aValorReferencia.setOptional(false);
            addField(aValorReferencia, "rqd");
            addField(aValorMedidoAntesAjuste, "opt");
            addField(aIncertezaMedidoAntesAjuste, "opt");
            addField(aValorMedidoDepoisAjuste, "opt");
            addField(aIncertezaMedidoDepoisAjuste, "opt");
        }
        
        {
            setFeatureName("UPDATE");
            setPrimary(false);
            setRows(15);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="DELETE">
    public class FDelete extends DeleteFeature {
        
        @Override
        public void initForm() {
            addField(aValorReferencia, "view");
            addField(aValorMedidoAntesAjuste, "view");
        }
        
        {
            setFeatureName("DELETE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FQuery());
        addFeature(new FList());
        addFeature(new FView());
        addFeature(new FInsert());
        addFeature(new FUpdate());
        addFeature(new FDelete());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "QUERY";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    
    public Double getValorReferencia() {
        return aValorReferencia.getValue();
    }
    
    public void setValorReferencia(Double value) {
        this.aValorReferencia.setValue(value);
    }
    
    public Double getValorMedidoAntesAjuste() {
        return aValorMedidoAntesAjuste.getValue();
    }
    
    public void setValorMedidoAntesAjuste(Double value) {
        this.aValorMedidoAntesAjuste.setValue(value);
    }
    
    public Double getIncertezaMedidoAntesAjuste() {
        return aIncertezaMedidoAntesAjuste.getValue();
    }
    
    public void setIncertezaMedidoAntesAjuste(Double value) {
        this.aIncertezaMedidoAntesAjuste.setValue(value);
    }
    
    public Double getValorMedidoDepoisAjuste() {
        return aValorMedidoDepoisAjuste.getValue();
    }
    
    public void setValorMedidoDepoisAjuste(Double value) {
        this.aValorMedidoDepoisAjuste.setValue(value);
    }
    
    public Double getIncertezaMedidoDepoisAjuste() {
        return aIncertezaMedidoDepoisAjuste.getValue();
    }
    
    public void setIncertezaMedidoDepoisAjuste(Double value) {
        this.aIncertezaMedidoDepoisAjuste.setValue(value);
    }
    
    @Override
    public Long getId() {
        return aId.getValue();
    }
    
    public void setId(Long value) {
        this.aId.setValue(value);
    }
    
    public Long getCertificadoCalibracaoId() {
        return aCertificadoCalibracaoId.getValue();
    }
    
    public void setCertificadoCalibracaoId(Long value) {
        this.aCertificadoCalibracaoId.setValue(value);
    }
    public String getQueryValorReferencia() {
        return qValorReferencia.getQueryValue();
    }
    
    public void setQueryValorReferencia(String value) {
        this.qValorReferencia.setQueryValue(value);
    }
    public String getQueryValorMedidoAntesAjuste() {
        return qValorMedidoAntesAjuste.getQueryValue();
    }
    
    public void setQueryValorMedidoAntesAjuste(String value) {
        this.qValorMedidoAntesAjuste.setQueryValue(value);
    }
    public String getQueryIncertezaMedidoAntesAjuste() {
        return qIncertezaMedidoAntesAjuste.getQueryValue();
    }
    
    public void setQueryIncertezaMedidoAntesAjuste(String value) {
        this.qIncertezaMedidoAntesAjuste.setQueryValue(value);
    }
    public String getQueryValorMedidoDepoisAjuste() {
        return qValorMedidoDepoisAjuste.getQueryValue();
    }
    
    public void setQueryValorMedidoDepoisAjuste(String value) {
        this.qValorMedidoDepoisAjuste.setQueryValue(value);
    }
    public String getQueryIncertezaMedidoDepoisAjuste() {
        return qIncertezaMedidoDepoisAjuste.getQueryValue();
    }
    
    public void setQueryIncertezaMedidoDepoisAjuste(String value) {
        this.qIncertezaMedidoDepoisAjuste.setQueryValue(value);
    }
    
    public Long getParameterIdCertificadoCalibracao() {
        return pIdCertificadoCalibracao.getValue();
    }
    
    public void setParameterIdCertificadoCalibracao(Long value) {
        pIdCertificadoCalibracao.setValue(value);
        aCertificadoCalibracaoId.setValue(value);
    }
    // </editor-fold>
    
}
